/**
 * 动态环境片元着色器
 * 混合两个 HDR 环境贴图并调整强度
 * 用于实现夜间和明亮环境的平滑过渡
 */

// Shadertoy 风格的 uniform
uniform float iTime;        // 经过的时间
uniform vec3 iResolution;   // 视口分辨率
uniform vec4 iMouse;        // 鼠标位置

// 从顶点着色器传入的变量
varying vec2 vUv;           // UV 纹理坐标

// 自定义 uniform
uniform sampler2D uEnvmap1; // 环境贴图 1（夜间）
uniform sampler2D uEnvmap2; // 环境贴图 2（明亮）
uniform float uWeight;      // 混合权重（0=全夜间，1=全明亮）
uniform float uIntensity;   // 环境光强度

void main(){
    // 获取 UV 坐标
    vec2 uv=vUv;
    
    // 采样两个环境贴图
    vec3 envmap1=texture(uEnvmap1,uv).xyz; // 夜间环境
    vec3 envmap2=texture(uEnvmap2,uv).xyz; // 明亮环境
    
    // 混合两个环境并乘以强度
    vec3 col=mix(envmap1,envmap2,uWeight)*uIntensity;
    
    // 输出最终颜色
    gl_FragColor=vec4(col,1.);
}